Click here to return to the VHDL Reference Guide. (last edit: 24. september 2012)

Procedure Call

A sequential or concurrent statement which causes a procedure to be executed. The values of any parameters are passed in or out of the procedure, depending on their Mode.

Syntax

  [Label:] ProcedureName [ ( [Formal =>] Actual, ... ) ]

  Formal = {either} Name FunctionCall
  Actual = Expression
    

Where

entity-begin--end {passive procedure call} architecture-begin--end block-begin--end generate-begin--end See Sequential Statement

Rules

Sequential statements can be labelled in VHDL'93, but not in VHDL'87. The two forms of syntax (ordered list or explicitly named parameters) can be mixed, but the ordered list must come before the named parameters.

Synthesis

A procedure call is synthesized by substituting the logic represented by the procedure in place of the call. Synthesis does not treat procedures as shareable resources. A procedure call in a clocked process may result in registers being inferred from signal assignments within the procedure.

Tips

Use the parameter names rather than order to improve readability and reduce the risk of making errors.

Example

  procedure Write (L:         inout Line;
                   Value:     in Std_logic_vector;
                   Justified: in Side  := Right;
                   Field:     in Width := 0);
  ...
  Write (Buff, A, Left, 8);
  Write (Buff, C);
  Write (Justified => Left, Field => 12,
         L => Buff, Value => D);
    

See Also

Procedure, Function Call